<?php 
  	if (DEBUGPRINT) echo '<br> MYSQL.class';


class MYSQLClass {

// Определение настроек базы данных


private $defaults = array(
		'dbtype'    => DB_TYPE,
		'host'      => DB_HOST,
		'user'      => DB_USER,
		'pass'      => DB_PASSWORD,
		'dbname'    => DB_DBNAME,
		'tmessages' => DB_TMESSAGES,
		'tcoments'  => DB_TMESSAGES,
		'port'      => NULL,
		'socket'    => NULL,
		'pconnect'  => FALSE,
		'charset'   => 'utf8',
		'errmode'   => 'error', //or exception
		'exception' => 'Exception', //Exception class name
	);

    private $HOSTNAME;
    private $USERNAME;
    private $PASSWORD;
    private $DBNAME;
    private $TMESSAGES;
	private $TCOMMENTS;
	private $CHARSET;
	
	private $conn;
	
	
	/**
    * Конструктор класса
    *
    * Устанавливает соединение с базой данных MySQL, выбирает базу и устанавливает кодировку UTF8
    */
  public function __construct()
  {
  	 
  	if (DEBUGPRINT) echo '<br> construct';
		
		$this->HOSTNAME  = $this->defaults['host'];
        $this->USERNAME  = $this->defaults['user'];
        $this->PASSWORD  = $this->defaults['pass'];
        $this->DBNAME    = $this->defaults['dbname'];
        $this->TMESSAGES = $this->defaults['tmessages'];
        $this->TCOMMENTS = $this->defaults['tcoments'];
		$this->CHARSET 	 = $defaults['charset'];
		
	
	

	if (DEBUGPRINT) echo '<br> mysql_connect';
		
		
  	$conn = mysql_connect(
  			$this->HOSTNAME,
  			$this->USERNAME,
  			$this->PASSWORD
						 )
    	or die ("<br/>Не могу подсоединиться к серверу MySQL". mysql_error());
				if (DEBUGPRINT) echo '<br> mysql_connect-+';	
    mysql_select_db(
    		$this->DBNAME,
			
      		$conn
			 	   )
				   
    	or die ("<br/>Не могу получить указанную базу данных". mysql_error());

	mysql_set_charset('UTF8') or die (mysql_error());
	
	
		if (DEBUGPRINT) echo '<br> mysql_connect--';
	return $conn;
	if (DEBUGPRINT) echo '<br> construct end';
  }
  
  
 
  
    
  /**
   * Деструктор класса
   *
   * Закрывает соединение с базой данных, если оно было установлено
   */
  function __destruct() 
  {
    if ($this->link)
    mysql_close($link);
  }
  
  
 private function dbconnect() {
  	$conn = mysql_connect(
  			$this->HOSTNAME,
  			$this->USERNAME,
  			$this->PASSWORD
						 )
    	or die ("<br/>Не могу подсоединиться к серверу MySQL". mysql_error());
				if (DEBUGPRINT) echo '<br> mysql_connect-+';	
    mysql_select_db(
    		$this->DBNAME,
			
      		$conn
			 	   )
				   
    	or die ("<br/>Не могу получить указанную базу данных". mysql_error());

	mysql_set_charset('UTF8') or die (mysql_error());
  }



  


  
  private function query($sql){
    if (DEBUGPRINT) echo '<br> query($sql)';
	
   // $this->dbconnect();

    $res = mysql_query($sql);

    if ($res){
      if (strpos($sql,'SELECT') === false){
        return true;
      }
    }
    else{
      if (strpos($sql,'SELECT') === false){
        return false;
      }
	  else{
	    return null;
	  }
    }

    $results = array();

    while ($row = mysql_fetch_array($res)){

      $result = new DALQueryResult();

      foreach ($row as $k=>$v){
        $result->$k = $v;
      }

      $results[] = $result;
    }
	
  if (DEBUGPRINT) echo '<br> query($sql) end';
  return $results;	

  }  
  
  
    
  public function get_message($id){
    $sql = "'SELECT * FROM gb_coments WHERE messageid='.$id'].' ORDER BY comentdatetime  '";
    return $this->query($sql);
  }
  
  
  public function install(){
  	 if (DEBUGPRINT) echo '<br> install';
	 $this->dbconnect();
  /*  $sql = "'CREATE TABLE IF NOT EXISTS gb_messages 
		(
			id int(10) unsigned NOT NULL auto_increment,
			datetime datetime NOT NULL,
			name varchar(100) NOT NULL,
			message text NOT NULL,
			PRIMARY KEY (id),
			INDEX (datetime)
	 	)
		DEFAULT CHARACTER SET  utf8
	 	'";
    $res = $this->query($sql);*/
	
	
	$sql = "'CREATE TABLE IF NOT EXISTS gb_coments (
			comentid int(10) unsigned NOT NULL auto_increment,
			comentdatetime datetime NOT NULL,
			comentname varchar(100) NOT NULL,
			coment text NOT NULL,
			messageid varchar(100) NOT NULL,
			PRIMARY KEY (comentid),
			INDEX (comentdatetime)
		)
		DEFAULT CHARACTER SET  utf8
	 	'";
		
		
			  $result = mysql_query($sql);
    //$this->query($sql);
    
    
	

	  	 if (DEBUGPRINT) echo '<br> install OK)';
  }
  
  
   /**
     * Метод для добавления сообщения
     *
     * @access public
     * @param String $message текст сообщения
     * @param String $name имя автора сообщения
     * @return Boolean TRUE в случае успешного завершения метода, иначе - FALSE
     */
    public function addMessage($message, $name) {
        if (!is_string($message) || !is_string($name) || empty($message) || empty($name) ) {
             if (DEBUGPRINT) {
                echo ('<br>addMessage: не верный тип данных');
                echo ('<br>$message is ' . gettype($message));
                echo ('<br>$name is ' . gettype($name));
             }
            return FALSE;                        
        }
        $success = $this->insertIntoTable(
                $this->TMESSAGES,
                'message, name, datetime ',
                $this->SaveString($message) . ", " .
                $this->SaveString($name) .
                ", NOW()");
        
        if ($success && DEBUGPRINT)
            echo "<br>Сообщение добавлено.\n";
        else if (self::DBG)
            echo "<br>Ошибка при добавлении сообщения.\n";
        return $success;
    }
	
	
	
  public function addComent($message, $name) {
  		$template = new templates();
		$template->	template_comentform();
   
  }
  
   public function changeMessage ($messageID)
   {
		
   	//getmessage($messageID)
	$template = new templates();
	$template->	template_changeform();
	
	
	
   }
  
    public function changeComent ($messageID)
   {
		
   	//getmessage($messageID)
	$template = new templates();
	$template->	template_changecomentform();
	  if (DEBUGPRINT) echo '<br> changeComent';
	
	
	
   }
  
  
      private function insertIntoTable($tablename, $columnnames = '', $columnvalues = '') {
        if (!is_string($tablename)   || 
            !is_string($columnnames) || 
            !is_string($columnvalues)) return FALSE;
        
        $query = sprintf(
                "INSERT INTO `%s` (%s) VALUES (%s)",
                $tablename,
                $columnnames,
                $columnvalues);

        $result = mysql_query($query);

        // Проверка результата
        if (!$result && DEBUGPRINT) {
            $message = 'Invalid query: ' . mysql_error() . "\n". $query;
            echo "<br>$message";
        }
        return $result;
    }
  
   public function fetch_array($Messages)
   {
   	
	return mysql_fetch_array($Messages);
   }
  
  public function getallMessage()
  {
  	if (DEBUGPRINT) echo '<br>MYSQL getallMessage';	
	
  	  
          $rows = array();
	    $sql= 'Select * from '.$this->TMESSAGES.' datetime DESC';
        if (DEBUGPRINT) echo $sql;	
        $sqlresult = $this->query($sql);
          if (DEBUGPRINT) echo  $sqlresult;    
      //  while ($rows[] = mysql_fetch_array($sqlresult));
      //  array_pop($rows);
  return $sqlresult;    
//        return $rows;
	
//	return $result;
  }
  
      public function getComents($messageid)
  {
  	  	if (DEBUGPRINT) echo '<br>MYSQL getComents';	
	
  	$coments= array();	

    $sql = "'SELECT * FROM gb_coments WHERE messageid='.$messageid'].' ORDER BY comentdatetime  '";
    
    
    $coments = $this->query($sql);

	return $coments;
  }
  
   private function SaveString($sstring) {
        if (is_string($sstring))
		{
		$sstring = trim($sstring);
		$sstring = stripslashes($sstring);
		$sstring = nl2br($sstring);
		$sstring = strip_tags($sstring);
		$sstring = htmlspecialchars($sstring);
		return "'" . $sstring . "'";	
		}
        return "''";        
    }
  
 
 
 
 private function get_num_row($result) //количество строк
{
	return mysql_num_rows($result);
}
  
  public function get_models_by_make_name($name){
    $sql = "SELECT models.id as id, models.name as name, makes.name as make FROM models INNER JOIN makes ON models.make=makes.id WHERE makes.name='$name'";
    return $this->query($sql);
  }
  
  
  
  
}